1. КОМПОНЕНТЫ ВЫБОРА ЗНАЧЕНИЯ ИЗ СПИСКА

1.1. КОМПОНЕНТ «JComboBox» (поле со списком)

Компонент JComboBox служит для выбора какого-либо одного текстового значения из выпадающего списка.

п/п

Свойство

Назначение

1.

model

СПИСОК ЗНАЧЕНИЙ СПИСКА (набор текстовых строк, без пустых строк в конце)

2.

font

Шрифт текста списка

3.

foreground

Цвет текста списка

4.

background

Цвет фона списка

5.

selectedIndex

Номер выбранной строки (отсчет с 0)

6.

selectedItem

Значение выбранного элемента

7.

editable

Разрешение редактирования значений

8.

maximumRowCount

Количество отображаемых строк в выпадающем списке, после которых включается вертикальная прокрутка списка

9.

toolTipText

Всплывающая подсказка

10.

border

Дополнительная рамка у компонента

11.

componentPopupMenu

Привязка компонента всплывающего меню

12.

enabled

Доступность компонента

13.

focusable

Разрешение фокуса ввода с клавиатуры

14.

opaque

Непрозрачность фона

15.

X

Положение верхнего левого угла компонента, координата X

16.

Y

Положение верхнего левого угла компонента, координата Y

17.

Ширина

Ширина компонента

18.

Высота

Высота компонента

 

п/п

События

Назначение

1.

actionPerformed

Основное событие на изменение выбранного значения в списке

 

п/п

Методы

Назначение

1.

getSelectedItem()

Получение выбранного значения из списка

2.

getSelectedIndex()

Получение номера выбранного значения из списка (отсчет с 0)

3.

removeAllItems

Удалить все строки списка

4.

addItem

Добавить новую строку в список

5.

removeItemAt

Удалить нужную строку из списка

6.

setSelectedIndex()

Установка желаемого номера строки для выбора (отсчет с 0)

7.

setSelectedItem()

Установка желаемого значения строки для выбора

8.

getItemCount()

Количество строк в списке (отсчет с 1)

1.1.1. Примеры работы с JComboBox

private void jComboBox1ActionPerformed(java.awt.event.ActionEvent evt) {

// Обработка выбора значения из списка JComboBox

try {

// Получение значения выбранной строки

jTextField1.setText(jComboBox1.getSelectedItem().toString());

} catch (Exception e) { // Значение в компоненте не выбрано

jTextField1.setText("");

};

}

private void jComboBox1ActionPerformed(java.awt.event.ActionEvent evt) {

// Обработка выбора значения из списка JComboBox по выбранному номеру строки

int k = jComboBox1.getSelectedIndex(); // Получение номера выбранной строки

if (k==-1) return; // Если ничего не выбрано, то выход из процедуры

jTextField1.setText(jComboBox1.getModel().getElementAt(k).toString());

}

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {

//  Пример изменения набора строк в компоненте JComboBox

jComboBox1.removeAllItems(); // Очистка всех элементов

jComboBox1.addItem("Delphi"); // Добавление элемента

jComboBox1.addItem("Java"); // Добавление элемента

jComboBox1.addItem("C#"); // Добавление элемента

jComboBox1.addItem("C++"); // Добавление элемента

jComboBox1.removeItemAt(0); // Удаление элемента

jComboBox1.setSelectedIndex(0); // Выбор значения по номеру

// jComboBox1.setSelectedItem("C++"); // Выбор значения по названию

}

1.2. КОМПОНЕНТ «JList» (список)

Компонент JList служит для выбора какого-либо одного или нескольких текстовых значений из списка.

п/п

Свойство

Назначение

1.

model

СПИСОК ЗНАЧЕНИЙ СПИСКА (набор текстовых строк, без пустых строк в конце)

2.

font

Шрифт текста списка

3.

foreground

Цвет текста списка

4.

background

Цвет фона списка

5.

selectedIndex

Номер выбранной строки (отсчет с 0, -1 – значение не выбрано)

6.

selectionMode

Режим выбора значения из списка:

SINGLE – выбор одного значения;

SINGLE_INTERVAL – выбор произвольного непрерывного интервала значений;

MULTIPLE_INTERVAL – выбор произвольного набора значений.

7.

layoutOrientation

VERTICAL - все элементы списка отображаются в виде одного столбца

VERTICAL_WRAP - элементы списка отображаются в виде столбцов

HORIZONTAL_WRAP - элементы списка также располагаются в столбцах, но количество элементов по горизонтали фиксировано

8.

visibleRowCount

Количество отображаемых строк (остальные в прокрутке)

9.

fixedCellHeight

Высота строк (-1 – аторазмер)

10.

fixedCellWidth

Ширина столбцов строк для много столбцового режима (-1 – аторазмер)

11.

toolTipText

Всплывающая подсказка

12.

border

Дополнительная рамка у компонента

13.

componentPopupMenu

Привязка компонента всплывающего меню

14.

enabled

Доступность компонента

15.

focusable

Разрешение фокуса ввода с клавиатуры

16.

opaque

Непрозрачность фона

ПРИМЕЧАНИЕ. При добавлении на форму компонента JList предварительно автоматически вставляется компонент JScrollPane, и уже в него вставляется  JList. Это дает компоненту JList возможность горизонтальной и вертикальной прокрутки. Свойства «X», «Y», «Ширина», «Высота» перенесены в компонент JScrollPane.

п/п

События

Назначение

1.

valueChanged

Основное событие на изменение выбранного значения в списке

 

п/п

Методы

Назначение

1.

getSelectedIndex()

Получение номера выбранной строки (отсчет с 0, -1 – значение не выбрано)

2.

getSelectedValue()

Получение выбранного значения из списка

3.

setSelectedIndex()

Установка номера строки выбора (для режима одиночного выбора, отсчет с 0)

4.

getSelectedIndices()

Возвращает номера выбранных строк (для режима мульти-выбора, отсчет с 0)

5.

getSelectedValuesList()

Возвращает список значений всех выделенных элементов списка (с JDK ver. 1.7)

6.

setSelectedIndices()

Установка номеров строк для выбора (для режима мульти-выбора, отсчет с 0)

7.

setSelectedValue()

Установка выбора нужной строки по ее значению

8.

setSelectionInterval

Установка выбора через указание интервала номеров строк

9.

setListData

Установка новых значений списка

1.2.1. Примеры работы с JList

private void jList1_valueChanged(javax.swing.event.ListSelectionEvent evt) {

// Получение значения выбранной строки в JList

try {

jTextField1.setText(jList1.getSelectedValue().toString());

} catch (Exception e) { jTextField1.setText(""); };

}

private void jList1_valueChanged(javax.swing.event.ListSelectionEvent evt) {

// Получение значения выбранной строки в JList по номеру выделенной строки

int k = jList1.getSelectedIndex(); // Получение номера выделенной стоки

if (k==-1) return; // Если не выбрана строка то выход их процедуры

// Получение выделенной строки

jTextField1.setText(jList1.getModel().getElementAt(k).toString());

}

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {

// Получение номеров выбранных строк из JList

int[] k = jList1.getSelectedIndices(); // Получаем номера выбранных строк

String s = Arrays.toString(k); // Преобразуем цифры номеров сток в строку типа «[0, 2, 5]»

jTextField1.setText(s); // Выводим номера выбранных строк

}

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {

// Получение значений выбранных строк из JList

// Получаем строку типа «[Java, Delphi, Джава]»

jTextField1.setText(jList1.getSelectedValuesList().toString());

}

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {

// Установка нужной строки в JList

jList1.setSelectedIndex(2); // Выбираем 3 стоку (отсчет с 0)

}

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {

// Установка выбранных строк в  JList

jList1.setSelectedIndices(new int[] {1,3,4}); // Выбираем строки 2, 4 и 5 (отсчет с 0)

}

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {

// Установка строки по значению в  JList

//  Второй параметр означает необходимость автопрокрутки до выбранной строки

jList1.setSelectedValue( "Java", true);

}

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {

// Установка выбора строк через указание интервала номеров строк в  JList

jList1.getSelectionModel().setSelectionInterval(0, 3); // Выделить первые 4 строки

}

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {

// Установка новых данных (строк) в  JList

// jList1.setListData(new String[]{""}); // Очистка данных

// Очистка данных с установкой новых значений

jList1.setListData(new String[]{"Pavlodar", "Astana", "Moskov"});

jList1.setSelectedValue("Moskov", true); // Выбор значения по названию

}

1.3. КОМПОНЕНТ «JRadioButton» (кнопка-переключатель)
 и «
ButtonGroup» (группа кнопок)

Если нужно организовать выбор только одного из нескольких вариантов, используется компонент JRadioButton. Несколько радио-кнопок объединяют в группу с помощью не визуального компонента ButtonGroup (в рамках которого осуществляется выбор). После щелчка мыши на одной из радио-кнопок группы будет выбрана только она.

п/п

Свойство

Назначение

1.

buttonGroup

Ссылка на компонент группы ButtonGroup

2.

actionCommand

Название команды. Данное название придумывается самостоятельно, например это может быть номер пункта: «1» и т.п. Наличие команды обязательно для работы кнопки

3.

text

Текстовое значение пункта

4.

selected

Выбор пункта (да/нет)

5.

font

Шрифт текста списка

6.

foreground

Цвет текста списка

7.

background

Цвет фона списка

8.

icon

Картинка вместо «точки»  для невыбранного состояния

9.

iconTextGap

Расстояние от картинки «icon» до надписи кнопки

10.

selectedIcon

Картинка вместо «точки» для выбранного состояния

11.

rolloverIcon

Картинка вместо «точки» при наведении на нее мышки для невыбранного состояния

12.

rolloverSelectedIcon

Картинка вместо «точки» при наведении на нее мышки для выбранного состояния

13.

horizontalAlignment

Выравнивание текста и картинки кнопки относительно ее размеров по горизонтали

14.

horizontalTextPosition

Положение картинки и надписи кнопки относительно друг друга по горизонтали

15.

verticalAlignment

Выравнивание текста и картинки кнопки относительно ее размеров по вертикали

16.

verticalTextPosition

Положение картинки и надписи кнопки относительно друг друга по вертикали

17.

border

Дополнительная рамка у компонента

18.

componentPopupMenu

Привязка компонента всплывающего меню

19.

enabled

Доступность компонента

20.

focusable

Разрешение фокуса ввода с клавиатуры

21.

opaque

Непрозрачность фона

22.

X

Положение верхнего левого угла компонента, координата X

23.

Y

Положение верхнего левого угла компонента, координата Y

24.

Ширина

Ширина компонента

25.

Высота

Высота компонента

 

п/п

События

Назначение

1.

actionPerformed

Основное событие на выбор пункта

Для работы с радио-кнопками необходимо сделать следующее:

1.       сделать обработчик события для какой-либо радио-кнопки группы, например первой: «jRadioButton1_actionPerformed»;

2.       указать всем остальным радио-кнопкам, что событие «actionPerformed» должно обрабатываться уже созданным методом «jRadioButton1_actionPerformed». Для этого нужно всем кнопкам, через инспектор объектов, в поле события «actionPerformed» вручную вписать строку «jRadioButton1_actionPerformed».

Таким образом получится, что для всех радио-кнопок будет вызываться один и тот же метод «jRadioButton1_actionPerformed», в котором и будет производится обработка выбора одного из значений.

Узнать данные о том, какая именно кнопка нажалась в группе радио-кнопок, можно через метод «getSelection().getActionCommand()» компонента ButtonGroup.

1.3. 1. Примеры работы с JRadioButton

private void jRadioButton1_actionPerformed(java.awt.event.ActionEvent evt) {

// Выбор значения из группы JRadioButton по имени «акции» (этот метод нужен один для всех радио-кнопок группы)

// Получаем название команды (номера кнопки)

String s = buttonGroup1.getSelection().getActionCommand();

switch (s) {

case "1": jTextField1.setText("Oracle"); break;

case "2": jTextField1.setText("Microsoft"); break;

case "apple": jTextField1.setText("Apple"); break;

default: jTextField1.setText("???");

}

}

private void jRadioButton1_actionPerformed(java.awt.event.ActionEvent evt) {

// Выбор значения из группы JRadioButton по ссылке на выбранную кнопку (этот метод нужен один для всех радио-кнопок группы)

// Получаем ссылку на выбранную радио-кнопку

JRadioButton button = (JRadioButton)evt.getSource();

jTextField1.setText(button.getText());  // Получаем название выбранной кнопки-переключателя

jTextField2.setText(button.getActionCommand()); // Получаем название команды кнопки

}

2. КОМПОНЕНТЫ ВЫБОРА ЗНАЧЕНИЯ

2.1. КОМПОНЕНТ «JCheckBox» (флажок)

Если нужно организовать выбор только одного варианта из одного, то используется компонент JCheckBox. После щелчка мыши на компоненте он будет помечен как выбранный, при повторном щелчке выделение снимется.

Если необходимо сделать несколько разных независимых выборов, то нужно использовать несколько разных компонент JCheckBox: для каждого выбора по одному компоненту. Пример из трех компонент:

п/п

Свойство

Назначение

1.

actionCommand

Название команды. Данное название придумывается самостоятельно, например это может быть номер пункта: «1» и т.п. Наличие команды обязательно для работы кнопки

2.

text

Текстовое значение пункта

3.

selected

Выбор пункта (да/нет)

4.

font

Шрифт текста списка

5.

foreground

Цвет текста списка

6.

background

Цвет фона списка

7.

icon

Картинка вместо «галочки»  для невыбранного состояния

8.

iconTextGap

Расстояние от картинки «icon» до надписи кнопки

9.

selectedIcon

Картинка вместо «галочки» для выбранного состояния

10.

rolloverIcon

Картинка вместо «галочки» при наведении на нее мышки для невыбранного состояния

11.

rolloverSelectedIcon

Картинка вместо «галочки» при наведении на нее мышки для выбранного состояния

12.

horizontalAlignment

Выравнивание текста и картинки кнопки относительно ее размеров по горизонтали

13.

horizontalTextPosition

Положение картинки и надписи кнопки относительно друг друга по горизонтали

14.

verticalAlignment

Выравнивание текста и картинки кнопки относительно ее размеров по вертикали

15.

verticalTextPosition

Положение картинки и надписи кнопки относительно друг друга по вертикали

16.

border

Дополнительная рамка у компонента

17.

componentPopupMenu

Привязка компонента всплывающего меню

18.

enabled

Доступность компонента

19.

focusable

Разрешение фокуса ввода с клавиатуры

20.

opaque

Непрозрачность фона

21.

X

Положение верхнего левого угла компонента, координата X

22.

Y

Положение верхнего левого угла компонента, координата Y

23.

Ширина

Ширина компонента

24.

Высота

Высота компонента

 

п/п

События

Назначение

1.

actionPerformed

Основное событие на выбор пункта

Для работы с кнопкой-флажком необходимо сделать следующее:

1.       сделать обработчик события для какой-либо кнопки-флажка, например первой: «jCheckBox1ActionPerformed»;

2.       указать всем остальным кнопкам-флажкам, что событие «actionPerformed» должно обрабатываться уже созданным методом «jCheckBox1ActionPerformed». Для этого нужно всем кнопкам-флажкам, через инспектор объектов, в поле события «actionPerformed» вручную вписать строку «jCheckBox1ActionPerformed».

Таким образом получится, что для всех кнопок-флажков будет вызываться один и тот же метод «jCheckBox1ActionPerformed», в котором и будет производиться обработка выбора значений.

2.1.1. Примеры работы с JCheckBox

private void jCheckBox1ActionPerformed(java.awt.event.ActionEvent evt) {

// Работа с несколькими JCheckBox (этот метод нужен один для всех флажков "группы")

JCheckBox button = (JCheckBox)evt.getSource();  // Получаем ссылку на нажатую кнопку-флажок

if (button.isSelected()) { // Если флажок выбран

String s = button.getActionCommand(); // Получаем имя "команды" кнопки

switch (s) {

case "1": jTextField1.setText("Oracle"); break;

case "2": jTextField1.setText("Microsoft"); break;

case "3": jTextField1.setText("Apple"); break;

default: jTextField1.setText("???");

}

} else jTextField1.setText(""); // Если флажок не выбран

}

private void jCheckBox1ActionPerformed(java.awt.event.ActionEvent evt) {

// Работа с одиночным флажком JCheckBox

if (jCheckBox1.isSelected()) { // Если флажок выбран, то включить видимость панели

jPanel1.setVisible(true) } else {  jPanel1.setVisible(false);  }

}

2.2. КОМПОНЕНТ JTree (дерево)

Компонент JTree служит для отображения древовидной структуры данных и выбора нужного значения.

п/п

Свойство

Назначение

1.

model

МОДЕЛЬ ДЕРЕВА

2.

rootVisible

Запрет показа корневого узла и подузлов (остаются видимыми  только  дочерние к корневому узлу узлы)

3.

editable

Разрешение редактирования значений дерева

4.

showsRootHandles

Показать значек «-» у корневого узла

5.

font

Шрифт надписей вкладки

6.

foreground

Цвет фона компонента

7.

border

Вид рамки у панели

8.

toolTipText

Всплывающая подсказка

 

п/п

События

Назначение

1.

valueChanged

Выбор нужного узла/значения в дереве

 

п/п

Методы

Назначение

1.

getSelectionPath

Получение выбранной ветви (значения)  (строка типа «[JTree, food, pizza]»)

ПРИМЕЧАНИЕ. При добавлении на форму компонента JTree предварительно автоматически вставляется компонент JScrollPane, и уже в него вставляется  JTree. Это дает компоненту JTree возможность горизонтальной и вертикальной прокрутки. Свойства «X», «Y», «Ширина», «Высота» находятся в компоненте JScrollPane.

2.2.1. Редактор Модели JTree (свойство model)

2.2.2. Примеры работы с JTree

private void jTree1ValueChanged(javax.swing.event.TreeSelectionEvent evt) {

// Получение выбранной ветви (значения) в JTree

// Выдаст строку типа «[JTree, food, pizza]»

JOptionPane.showMessageDialog(rootPane,

jTree1.getSelectionPath(),"Выбрано",JOptionPane.INFORMATION_MESSAGE);

}